package com.wps.wdztv6.api.request;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.*;

@Data
@Builder
public class OperateImageRequest {
    // 任务id
    @JSONField(name="task_id")
    private String taskId;

    // 图片地址
    @JSONField(name="image_url")
    private String imageUrl;

    // 图片名称，必须带后缀
    @JSONField(name="image_filename")
    private String imageFilename;

    // 缩放百分比，默认1不缩放，如果高度和宽度大 于0则以高度宽度等比缩放
    
    private float scale;

    // 整数（小数会自动取整），图片宽度，如果宽度大于0则以图片宽度为标准等比缩放
    
    private Integer width;

    // 整数（小数会自动取整），图片高度，如果图片宽度小于0，高度大于0，则以高度为标准等比缩放
    
    private Integer height;

    // 图片旋转角度（大于0表示顺时针旋转），建议旋转角度为90的倍数
    
    private Integer rotate;

    // 图片质量，范围0-1，只能修改JPG/JPEG图片质量
    
    private float quality;

    // 水平翻转
    @JSONField(name="horizontal_flip")
    private boolean horizontalFlip;

    // 垂直翻转
    @JSONField(name="vertical_flip")
    private boolean verticalFlip;

    // 文字水印
    @JSONField(name="text_watermark")
    private TextWatermark textWatermark;

    // 图片水印
    @JSONField(name="image_watermark")
    private ImageWatermark imageWatermark;

    @Getter
    @Setter
    @ToString
    @Builder
    public static class TextWatermark{
        private String content;

        @JSONField(name="font_name")
        private String fontName;
        @JSONField(name="bold")
        private Boolean bold;
        @JSONField(name="italic")
        private Boolean italic;
        @JSONField(name="size")
        private Integer size;
        @JSONField(name="color")
        private String  color;
        @JSONField(name="transparent")
        private Float transparent;
        @JSONField(name="rotate")
        private Float rotate;
        @JSONField(name="position")
        private String position;
        @JSONField(name="tiled")
        private Boolean tiled;
    }

    @Getter
    @Setter
    @Builder
    public static class ImageWatermark{
        @JSONField(name="watermark_url")
        private String watermarkUrl;

        @JSONField(name="watermark_filename")
        private String watermarkFilename;

        @JSONField(name="transparent")
        private Float transparent;

        @JSONField(name="rotate")
        private Float rotate;

        @JSONField(name="position")
        private String position;

        @JSONField(name="tiled")
        private Boolean tiled;
        @JSONField(name="scale")
        private Float scale;
    }
}
